#!usr/bin/python
# -*= coding: UTF-8 -*-
'''
定制容器
容器类型的协议
如果说你希望定制的容器是不可变的话，你只需要定义__len__()和__getitem__()方法。
如果你希望定制的容器是可变的话，除了__len__()和__getitem__()方法，你还需要定义
__setitem__()和___delitem__()两个方法

编写一个不可改变的自定义列表，要求记录列表中列表中每个元素被访问的次数
'''

class CountList:
    def __init__(self, *args):
        self.values = [x for x in args]
        self.count = {}.fromkeys(range(len(self.values)), 0)

    def __len__(self):
        return len(self.values)

    def __getitem__(self, key):
        self.count[key] += 1
        return self.values[key]

c1 = CountList(1, 3, 5, 7, 9)
c2 = CountList(2, 4, 6, 8, 10)
print(c1[1])
print(c2[1])
print(c1.count)

print('c1[1] + c2[3]', c1[1] + c2[3])






